using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Entidades;
using Negocio;

namespace VtasMkt.Marketing.TipoEvento
{
    public partial class frmTipoEvento : Form
    {
        #region Variables y constantes

        // DataTable que se empleara para la vista previa de la impresion
        DataTable _dtImp = new DataTable();

        #endregion

        #region Eventos del Formulario

        public frmTipoEvento()
        {
            InitializeComponent();
        }

        private void frmTipoEvento_Load(object sender, EventArgs e)
        {
            cargaCombo();
            mostrarInfoGrilla();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            if (FiltroValido())
            {
                //Negocio.Negocio.TipoEvento tipoEventoNeg0 = new Negocio.Negocio.TipoEvento();
                //tipoEventoNeg0.listaTipoEvento(this.txtCodigoTipoEvento.Text, this.txtDescripcion.Text, Convert.ToString(this.cboEstado.SelectedValue), Convert.ToString(this.cboSala.SelectedValue), Convert.ToString(this.cboTipoConfiguracion.SelectedValue));
                mostrarInfoGrilla();
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            Entidades.TipoEvento tipoEvento = new Entidades.TipoEvento();
            VtasMkt.Marketing.ServiciosMkt.frmActualizarTipoEvento actTipoEvento = new VtasMkt.Marketing.ServiciosMkt.frmActualizarTipoEvento(tipoEvento);
            actTipoEvento.Tag = AccionMnt.NuevoRegistro;
            actTipoEvento.ShowDialog();
            mostrarInfoGrilla();
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            Entidades.TipoEvento tipoEvento = new Entidades.TipoEvento();
            tipoEvento.CodigoTipoEvento = (int)(this.dgvMain.SelectedRows[0].Cells[0].Value);
            tipoEvento.CodigoDeSala = (int)(this.dgvMain.SelectedRows[0].Cells[2].Value);
            VtasMkt.Marketing.ServiciosMkt.frmActualizarTipoEvento actTipoEvento = new VtasMkt.Marketing.ServiciosMkt.frmActualizarTipoEvento(tipoEvento);
            actTipoEvento.Tag = AccionMnt.EditarRegistro;
            actTipoEvento.ShowDialog();
            mostrarInfoGrilla();
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            Entidades.TipoEvento tipoEvento = new Entidades.TipoEvento();
            tipoEvento.CodigoTipoEvento = (int)(this.dgvMain.SelectedRows[0].Cells[0].Value);
            tipoEvento.CodigoDeSala = (int)(this.dgvMain.SelectedRows[0].Cells[2].Value);
            VtasMkt.Marketing.ServiciosMkt.frmActualizarTipoEvento actTipoEvento = new VtasMkt.Marketing.ServiciosMkt.frmActualizarTipoEvento(tipoEvento);
            actTipoEvento.Tag = AccionMnt.EliminarRegistro;
            actTipoEvento.ShowDialog();
            mostrarInfoGrilla();
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnImprimir_Click(object sender, EventArgs e)
        {
            // Prepara el DataSet para la vista previa
            
            dsTipoEvento dsTipoEven = new dsTipoEvento();
            dsTipoEven.dtTipoEvento.Merge(_dtImp);

            // Muestra el formulario de vista previa con el reporte
            VtasMkt.General.frmVerReporte verRptWin = new VtasMkt.General.frmVerReporte(dsTipoEven);
            verRptWin.MdiParent = frmMain.ActiveForm;
            verRptWin.Show();
        }
        #endregion

        #region Metodos privados

        // Valida el filtro
        private bool FiltroValido()
        {
            VtasMkt.General.RutinasGenericas rutGen = new VtasMkt.General.RutinasGenericas();

            // Codigo Tipo Evento
            if (!rutGen.TextoSoloNumeros(this.txtCodigoTipoEvento.Text))
            {
                MessageBox.Show("El Codigo de Tipo Evento debe ser numerico.", this.Text,
                    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return false;
            }

            // Si todo esta ok
            return true;
        }

        // Muestra la informacion en la grilla del formulario
        private void mostrarInfoGrilla()
        {
            try
            {
                // Obtiene y prepara el filtro
                String pCodigoTipoEvento, pDescripcion, pEstado, pSala, pTipoConfiguracion;
                //VtasMkt.General.RutinasGenericas rutGen = new VtasMkt.General.RutinasGenericas();
                //fechaInicio = rutGen.FechaYYYYMMDD(this.dteFechaInicio.Value);
                //fechaFin = rutGen.FechaYYYYMMDD(this.dteFechaFin.Value);
                pCodigoTipoEvento = this.txtCodigoTipoEvento.Text;
                pDescripcion = this.txtDescripcion.Text;
                pEstado = Convert.ToString(this.cboEstado.SelectedValue);
                pSala = Convert.ToString(this.cboSala.SelectedValue);
                pTipoConfiguracion = Convert.ToString(this.cboTipoConfiguracion.SelectedValue);

                // Obtiene la informacion y la carga a la grilla
                Negocio.Controladora.ActualizarTipoEvento actTipoEvento =
                new Negocio.Controladora.ActualizarTipoEvento();
                DataTable dtInfo = actTipoEvento.listaTipoEvento(pCodigoTipoEvento, pDescripcion, pEstado, pSala, pTipoConfiguracion);
                dgvMain.DataSource = dtInfo;
                _dtImp = dtInfo;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, this.Text);
            }
        }

        private void cargaCombo()
        {
            // Carga el combobox de Estado del Tipo Evento
            Negocio.Controladora.ActualizarTipoEvento tipoEventoNeg0 = new Negocio.Controladora.ActualizarTipoEvento();
            DataTable dtInfo0 = tipoEventoNeg0.listaEstado();
            this.cboEstado.DataSource = dtInfo0;
            this.cboEstado.DisplayMember = "Descripcion";
            this.cboEstado.ValueMember = "CodigoEstado";

            // Carga el combobox de Salas
            Negocio.Controladora.ActualizarTipoEvento tipoEventoNeg1 = new Negocio.Controladora.ActualizarTipoEvento();
            DataTable dtInfo1 = tipoEventoNeg1.listaSala();
            this.cboSala.DataSource = dtInfo1;
            this.cboSala.DisplayMember = "Descripcion";
            this.cboSala.ValueMember = "CodigoSala";

            // Carga el combobox de Tipo Configuracion
            Negocio.Controladora.ActualizarTipoEvento tipoEventoNeg2 = new Negocio.Controladora.ActualizarTipoEvento();
            DataTable dtInfo2 = tipoEventoNeg2.listaTipoConfiguracion();
            this.cboTipoConfiguracion.DataSource = dtInfo2;
            this.cboTipoConfiguracion.DisplayMember = "Descripcion";
            this.cboTipoConfiguracion.ValueMember = "CodigoTipoConfiguracion";

        }

        #endregion

 

    }
}